package flown.window;

import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.JTextField;
import javax.swing.text.Document;

import flown.window.listener.MouseListener;


/**
 * @author flown
 */


/*String转int
 * (1)Integer.parseInt(str)
 * (2)Integer.valueOf(str).intValue()
 * */

/*int转String
 * (1)String.valueOf(num)
 * (2)Integer.toString(num)
 * */


public class TextFieldManager
{
	private ArrayList<JTextField> text_field;
	
	public TextFieldManager(){this.text_field = new ArrayList<JTextField>();}
	
	
	/**
	 * 获取文本编辑框
	 * @param index 文本编辑框索引
	 * @return JTextField
	 * */
	public final JTextField Get(int index) {return this.text_field.get(index);}
	
	
	/**
	 * 为一个文本编辑框设置鼠标监听器
	 * @param listener mouse listener
	 * @param index 文本编辑框索引
	 * */
	public final void SetMouseListener(MouseListener listener,int index)
	{
		this.text_field.get(index).addMouseListener(listener);
		this.text_field.get(index).addMouseMotionListener(listener);
		this.text_field.get(index).addMouseWheelListener(listener);
	}
	
	/**
	 * 为所以文本编辑框设置鼠标监听器
	 * @param listener mouse listener
	 * */
	public final void SetMouseListener(MouseListener listener)
	{
		for (JTextField jTextField : this.text_field) {
			jTextField.addMouseListener(listener);
			jTextField.addMouseMotionListener(listener);
			jTextField.addMouseWheelListener(listener);
		}
	}
	
	/**
	 * 为一个文本编辑框设置key监听器
	 * @param listener key listener
	 * @param index 文本编辑框索引
	 * */
	public final void SetKeyListener(KeyListener listener,int index)
	{
		this.text_field.get(index).addKeyListener(listener);
	}
	
	/**
	 * 为一个文本编辑框设置key监听器
	 * @param listener key listener
	 * */
	public final void SetKeyListener(KeyListener listener)
	{
		for (JTextField jTextField : this.text_field) jTextField.addKeyListener(listener);
	}
	
	
	
	/**
	 * 添加一个文本编辑框
	 * @return 文本编辑框索引
	 * */
	public final int AddTextField(){this.text_field.add(new JTextField());return this.text_field.size() - 1;}
	
	/**
	 * 添加一个带文本的文本编辑框
	 * @param text 文本编辑框内文本
	 * @return 文本编辑框索引
	 * */
	public final int AddTextField(String text){this.text_field.add(new JTextField(text));return this.text_field.size() - 1;}
	
	/**
	 * 添加一个具有指定列数的文本编辑框
	 * @param columns 列数
	 * @return 文本编辑框索引
	 * */
	public final int AddTextField(int columns){this.text_field.add(new JTextField(columns));return this.text_field.size() - 1;}
	
	/**
	 * 添加一个带文本且具有指定列数的的文本编辑框
	 * @param text 文本编辑框内文本
	 * @param columns 列数
	 * @return 文本编辑框索引
	 * */
	public final int AddTextField(String text, int columns)
	{
		this.text_field.add(new JTextField(text,columns));
		return this.text_field.size() - 1;
	}
	
	/**
	 * 添加一个文本编辑框
	 * @param doc Document
	 * @param text 文本编辑框内文本
	 * @param columns 列数
	 * @return 文本编辑框索引
	 * */
	public final int AddTextField(Document doc, String text, int columns)
	{
		this.text_field.add(new JTextField(doc,text, columns));
		return this.text_field.size() - 1;
	}
	
	/**
	 * 添加n个文本编辑框
	 * @param n 文本编辑框数量
	 * @return 文本编辑框索引数组
	 * */
	public final int[] AddTextFields(int n)
	{
		int[] index = new int[n];
		for(int i = 0;i < n;i++)
		{
			index[i] = this.text_field.size();
			this.text_field.add(new JTextField());
		}
			
		return index;
	}
	
	/**
	 * 添加n个文本编辑框
	 * @param text 文本编辑框内文本
	 * @return 文本编辑框索引数组
	 * */
	public final int[] AddTextFields(String... text)
	{
		int[] index = new int[text.length];
		for(int i = 0;i < text.length;i++)
		{
			index[i] = this.text_field.size();
			this.text_field.add(new JTextField(text[i]));
		}
		
		return index;
	}
	
	
	public final void SetText(String text,int index){this.text_field.get(index).setText(text);}//设置文本编辑框文本
	public final String GetText(int index){return this.text_field.get(index).getText();}//获取文本编辑框文本


	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.Window
	 * */
	public final void AddInWindow(Window window)
	{
		for (JTextField jTextField : this.text_field) window.Add(jTextField);
	}
	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.Window
	 * @param index 文本编辑框索引
	 * */
	public final void AddInWindow(Window window,int index){window.Add(this.text_field.get(index));}


	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.窗口
	 * */
	public final void AddInWindow(窗口 window)
	{
		for (JTextField jTextField : this.text_field) window.添加(jTextField);
	}
	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.窗口
	 * @param index 文本编辑框索引
	 * */
	public final void AddInWindow(窗口 window,int index){window.添加(this.text_field.get(index));}


	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.Dialog
	 * */
	public final void AddInWindow(Dialog window)
	{
		for (JTextField jTextField : this.text_field) window.Add(jTextField);
	}
	/**
	 * 将文本编辑框管理器添加到窗口
	 * @param window flown.window.Dialog
	 * @param index 文本编辑框索引
	 * */
	public final void AddInWindow(Dialog window,int index){window.Add(this.text_field.get(index));}

}






